package conservare.modelo.type;

import conservare.modelo.Endereco;
import conservare.modelo.localservico.CondominioResCasa;
import conservare.modelo.localservico.CondominioResPredio;
import conservare.modelo.localservico.EstabelecimentoComercial;
import conservare.modelo.localservico.Igreja;
import conservare.modelo.localservico.LocalEmpresa;
import conservare.modelo.localservico.LocalPrestacaoServico;

public enum TipoLocal {
	
	CONDOMINIO_RES_APARTAMENTO("Condomínio de Apartamentos", "Nome do Condomínio"),
	CONDOMINIO_RES_CASA("Condomínio de Casas", "Nome do Condomínio"),
	ESTABELECIMENTO_COMERCIAL("Estabelecimento Comercial", "Nome do Estabelecimento"), 
	IGREJA("Igreja", "Nome da Igreja"),
	EMPRESA("Empresa","Nome da Empresa");
	
	private String descricao;
	private String descricaoLabel;
	
	TipoLocal(String descricao, String descricaoLabel){
		this.descricao = descricao;
		this.descricaoLabel = descricaoLabel;
	}

	public String getDescricao() {
		return descricao;
	}

	public String getDescricaoLabel() {
		return descricaoLabel;
	}
	
	
	public LocalPrestacaoServico obterLocal(){
		
		LocalPrestacaoServico local = null;
		
		switch (this) {
		case CONDOMINIO_RES_CASA:
			local = new CondominioResCasa();
			break;
		case CONDOMINIO_RES_APARTAMENTO:
			local = new CondominioResPredio();
			break;
		case ESTABELECIMENTO_COMERCIAL:
			local = new EstabelecimentoComercial();
			break;
		case IGREJA:
			local = new Igreja();
			break;
		case EMPRESA:
			local = new LocalEmpresa();
			break;
		}
		
		if(local != null){
			local.setEndereco(new Endereco());
		}
		
		return local;
	}

	@Override
	public String toString() {
		return getDescricao();
	}
}	
